package com.workpaper.app.utils.platform;

import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;

/**
 * SWT平台工具方法整理
 */
public class SWTPlatformUtils {
	/**
	 * 获取当前工作台窗口对象
	 * @return
	 */
	public static IWorkbenchWindow getWorkbenchWindow() {
		return PlatformUI.getWorkbench().getActiveWorkbenchWindow();
	}
	/**
	 * 获取当前窗口活动“页”
	 * @return
	 */
	public static IWorkbenchPage getActivePage() {
		return getWorkbenchWindow().getActivePage();
	}
	/**
	 * 获取当前shell
	 * @return
	 */
	public static Shell getShell() {
		return getWorkbenchWindow().getShell();
	}
	
	/**
	 * 关闭应用
	 * @return
	 */
	public static void closeApp() {
		PlatformUI.getWorkbench().close();
	}
	
	/**
	 * 显示主窗口，用于最小化窗口之后，进行还原操作
	 */
	public static void showMainWindow() {
		Shell shell = getShell();
		shell.open();
		shell.setMinimized(false);
		shell.forceFocus();
	}
	/**
	 * 根据视图ID获取视图控件
	 * @param <T>	泛型，视图对象的类型
	 * @param viewId	视图ID
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static <T> T getViewByID(String viewId){
		return (T) getActivePage().findView(viewId);
	}
	/**
	 * 根据视图ID获取视图控件,用于链式调用
	 * @param <T>	泛型，视图对象的类型
	 * @param viewId	视图ID
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static <T> T getViewByID(String viewId, Class<T> clazz){
		return (T) getActivePage().findView(viewId);
	}
}
